package com.ruoyi.app.domain.project;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import javax.validation.constraints.NotNull;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;

/**
 * <p>
 * 作用：项目存盘对象
 * </p>
 *
 * @author Zane
 * @since 2025-10-10 2:22
 */
@Getter
@Setter
@Accessors(chain = true)
public class ProjectObj {

  /**
   * 项目ID,PN+yyyy+MM+DD+seq(6)
   */
  private String id;

  /**
   * 项目名称
   */
  @NotNull(message = "项目名称不能为空")
  private String projectName;

  /**
   * 服务品牌
   */
  @NotNull(message = "服务品牌不能为空")
  private String serviceBrand;

  /**
   * 服务车型
   */
  @NotNull(message = "服务车型不能为空")
  private String serviceModel;

  /**
   * 项目类型,取字典类型"projectType"
   */
  @NotNull(message = "项目类型不能为空")
  private String projectType;

  /**
   * 执行地点，多个地级市用逗号分隔
   */
  @NotNull(message = "执行地点不能为空")
  private String executionPlace;

  /**
   * 是否有备用金，0为否，1为是
   */
  @NotNull(message = "是否有备用金不能为空")
  private Integer hasReserveFund;

  /**
   * 备用金金额
   */
  private BigDecimal reserveFund;

  /**
   * 备用金预算明细文件路径
   */
  private String reserveFundDetailFile;

  /**
   * 备用金预算明细数据
   */
  private String reserveFundDetailFileKey;
  /**
   * 项目周期开始时间
   */
  @NotNull(message = "项目周期开始时间不能为空")
  private LocalDateTime projectStart;

  /**
   * 项目周期结束时间
   */
  @NotNull(message = "项目周期结束时间不能为空")
  private LocalDateTime projectEnd;

  /**
   * 项目概况
   */
  @NotNull(message = "项目概况不能为空")
  private String projectOverview;

  /**
   * 重点事项
   */
  @NotNull(message = "重点事项不能为空")
  private String keyItems;
  /**
   * 团队列表文件
   */
  @NotNull(message = "团队列表文件不能为空")
  private String teamListFile;

  /**
   * 团队列表
   */
  @NotNull(message = "团队列表文件Key不能为空")
  private String teamListFileKey;

  /**
   * 需求列表文件
   */
  @NotNull(message = "需求列表文件不能为空")
  private String demandListFile;

  /**
   * 需求列表
   */
  @NotNull(message = "需求列表文件Key不能为空")
  private String demandListFileKey;

  /**
   * 项目预算，自动计算：备用金 + 人工成本
   */
  @NotNull(message = "项目预算不能为空")
  private BigDecimal projectBudget;

  /**
   * 项目负责人
   */
  @NotNull(message = "项目负责人不能为空")
  private Long projectLeader;

  /**
   * 是否发布，0为否，1为是
   */
  @NotNull(message = "是否发布不能为空")
  private Integer publishFlag;

}
